package com.piano.moguyun.utils;

import com.lzy.okgo.model.HttpHeaders;

import java.math.BigInteger;
import java.security.MessageDigest;

/**
 * 获取参数值
 */
public class HttpPostData {

    public static String getPlanId(String userId) {
        String str = userId + "student" + "3478cbbc33f84bd00d75d7dfa69e0daa";
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算md5函数
            md.update(str.getBytes());
            // digest()最后确定返回md5 hash值，返回值为8位字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
            // 一个byte是八位二进制，也就是2位十六进制字符（2的8次方等于16的2次方）
            String plan = new BigInteger(1, md.digest()).toString(16);
            return plan;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 获取签到sign
     *
     * @param state   START:上班 END:下班
     * @param planId
     * @param userId  用户ID
     * @param address 详细地址
     * @return
     */
    public static String getSign(String state, String planId, String userId, String address) {
        String str = DataUt.device + state + planId + userId + address + DataUt.secret;//
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算md5函数
            md.update(str.getBytes());
            // digest()最后确定返回md5 hash值，返回值为8位字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
            // 一个byte是八位二进制，也就是2位十六进制字符（2的8次方等于16的2次方）
            String sign = new BigInteger(1, md.digest()).toString(16);
            return sign;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 获取学院信息接口的sign
     *
     * @return
     */
    public static String getPlanByStuSign(String userId, String roleKey) {
        String str = userId + roleKey + DataUt.secret;//
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算md5函数
            md.update(str.getBytes());
            // digest()最后确定返回md5 hash值，返回值为8位字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
            // 一个byte是八位二进制，也就是2位十六进制字符（2的8次方等于16的2次方）
            String sign = new BigInteger(1, md.digest()).toString(16);
            return sign;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 获取发布日报sign
     * @param userId
     * @param type 类型 day->日报
     * @param planId
     * @param title//标题
     * @return
     */
    public static String getDailySign(String userId, String type, String planId, String title) {
        String str = userId + type + planId + title + DataUt.secret;//
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算md5函数
            md.update(str.getBytes());
            // digest()最后确定返回md5 hash值，返回值为8位字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
            // 一个byte是八位二进制，也就是2位十六进制字符（2的8次方等于16的2次方）
            String sign = new BigInteger(1, md.digest()).toString(16);
            return sign;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    public static HttpHeaders getHeader(String sign, String token) {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.put("Host", DataUt.Host);
        httpHeaders.put("Accept-Language", DataUt.Accept_Language);
        httpHeaders.put("User-Agent", DataUt.user_agent_value);
        httpHeaders.put("Sign", sign);
        httpHeaders.put("Authorization", token);
        httpHeaders.put("roleKey", "student");
        httpHeaders.put("Content-Type", DataUt.Content_Type);
        httpHeaders.put("Accept-Encoding", "");
        httpHeaders.put("Cache-Control", DataUt.Cache_Control);
        return httpHeaders;
    }

}
